package br.com.rumus.mb.seguranca;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.primefaces.model.DualListModel;

import br.com.rumus.dao.seguranca.PapelDAO;
import br.com.rumus.dao.seguranca.PerfilDAO;
import br.com.rumus.dominio.seguranca.Papel;
import br.com.rumus.dominio.seguranca.Perfil;
import br.com.rumus.facade.FacadeSeguranca;
import br.com.rumus.mb.EditarBean;

@ManagedBean(name="editarPerfil")
@ViewScoped
public class EditarPerfilBean  extends EditarBean<Perfil>{

	private FacadeSeguranca facade = new FacadeSeguranca();
	private Perfil objeto;
	
	private DualListModel<Papel> papeis;  
	
	public DualListModel<Papel> getPapeis() {
		if(papeis==null){
			List<Papel> fonte = new ArrayList<Papel>();  
	        List<Papel> alvo = new ArrayList<Papel>();
	        PapelDAO papelDAO = new PapelDAO();
	        if(this.objeto.getPapeis()!=null){
	        	for( Papel papel : this.objeto.getPapeis() ){	        	
		        	alvo.add(papel);
		        }
	        }
	        
	        for( Papel papel : papelDAO.listar() ){
	        	if(!alvo.contains(papel)){
	        		fonte.add(papel);
	        	}
	        	
	        }
	        
	        this.papeis = new DualListModel<Papel>(fonte, alvo);  
		}
		return papeis;
	}

	public void setPapeis(DualListModel<Papel> papeis) {
		this.papeis = papeis;
	}

	public Perfil getObjeto() {
		if(this.objeto==null){
			this.objeto = new Perfil();
		} else if(this.objeto!=null&&this.objeto.getId()!=null){
			this.objeto = (Perfil)facade.buscar(this.objeto);
		}
		return objeto;
	}

	public void setObjeto(Perfil objeto) {
		this.objeto = objeto;
	}

	public String incluir(){
		this.objeto.setPapeis(this.papeis.getTarget());
		facade.inserir(this.objeto);
		return "/seguranca/perfil/listar.faces";
	}
	
	public String atualizar(){
		this.objeto.setPapeis(this.papeis.getTarget());
		facade.alterar(this.objeto);
		return "/seguranca/perfil/listar.faces";
	}
	
	public String cancelar(){
		return "/seguranca/perfil/listar.faces";
	}
	
	public String remover(){
		return "/seguranca/perfil/listar.faces";
	}
	
}
